package com.framework.state.impl;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class GeneradorArchivoPlano4505 extends  GeneradorArchivo4505Impl {
	StringBuilder stringBuilder_configuracion;
	StringBuilder stringBuilder_rows;
	
	public GeneradorArchivoPlano4505() {
		stringBuilder_rows = new StringBuilder(); 
	}
	 
	@Override
	public void onMontarCabecera() {
		stringBuilder_configuracion = new StringBuilder();
		stringBuilder_configuracion.append(registroControl + separador);
		stringBuilder_configuracion.append(codigo_administradora + separador);
		stringBuilder_configuracion.append(fecha_inicio + separador);
		stringBuilder_configuracion.append(fecha_final + separador);
		stringBuilder_configuracion.append(total + "");
	}

	@Override
	public File getFile(File dir_guardado) throws Exception{
		String nombre_completo_archivo = dir_guardado.getAbsoluteFile()
				+ File.separator + nombre;
		DataOutputStream dos = new DataOutputStream(new FileOutputStream(
				nombre_completo_archivo));
		dos.writeBytes(stringBuilder_configuracion.toString()
				+ stringBuilder_rows.toString());
		dos.close();
		FileInputStream archivo = new FileInputStream(nombre_completo_archivo);
		archivo.read(new byte[archivo.available()]);
		archivo.close();
		File archivo_txt = new File(nombre_completo_archivo);
		return archivo_txt;
	}

	@Override
	public void onAgregarLinea(LineaBean lineaBean) {
		acoplar(lineaBean.toString(++total, separador));  
	}

	private synchronized void acoplar(String fila) {
		stringBuilder_rows.append(fila); 
	}
}
